import router from './index'
import nprogress from 'nprogress'
import 'nprogress/nprogress.css'
import set from '../setting'
// 引入pinia库
import useCounterStore from '@/store/modules/user'
import pinia from '@/store'
const userStore = useCounterStore(pinia)
// 关闭加载
nprogress.configure({ showSpinner: false })

// 路由导航前值守卫
router.beforeEach(async (to, from, next) => {
    document.title = `${set.title} - ${to.meta.title}`
    nprogress.start()
    if (userStore.token) {
        // 有token如果前往login 就直接去首页
        if (to.path == '/login') {
            next({ path: '/' })
        } else {
            // 如果前往其它页查看是否有用户信息
            if (userStore.username) {
                // 有用户就通行
                next()
            } else {
                try {
                    await userStore.getUsers()
                    // next()
                    //万一:刷新的时候是异步路由,有可能获取到用户信息、异步路由还没有加载完毕,出现空白的效果
                    // 解决新增路由跳转 丢失页面的是问题 ...to 是页面加载完毕再跳转
                    next({ ...to })
                } catch (error) {
                    await userStore.outLogin()
                    next({ path: '/login', query: { routerLink: to.path } })
                }
            }
        }
    } else {
        // 没有token判断是否在登录页，如果在登录页通过路由，如果不在登录页返回登录页

        if (to.path == '/login') {
            next()
        } else {
            next({ path: '/login', query: { routerLink: to.path } })
        }
    }
})
// 路由导航后置守卫

router.afterEach((to, from) => {
    nprogress.done()
})
